//------------------------------------------------------------------------------
// The contents of this file are subject to the nopCommerce Public License Version 1.0 ("License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at  http://www.nopCommerce.com/License.aspx. 
// 
// Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. 
// See the License for the specific language governing rights and limitations under the License.
// 
// The Original Code is nopCommerce.
// The Initial Developer of the Original Code is NopSolutions.
// All Rights Reserved.
// 
// Contributor(s): _______. 
//------------------------------------------------------------------------------

using System;
using System.Web.UI.WebControls;
using NopSolutions.NopCommerce.BusinessLogic.Model;
using NopSolutions.NopCommerce.BusinessLogic.SEO;
using NopSolutions.NopCommerce.BusinessLogic.Services;
using NopSolutions.NopCommerce.BusinessLogic.Infrastructure;

namespace NopSolutions.NopCommerce.Web.Modules
{
    public partial class HomePageProductsControl : BaseNopFrontendUserControl
    {
        private IProductService _productService;
        private IPictureService _pictureService;
        private ISettingService _settingService;

        public HomePageProductsControl() {
            _productService = IoC.Resolve<IProductService>();
            _pictureService = IoC.Resolve<IPictureService>();
            _settingService = IoC.Resolve<ISettingService>();
        
        }

        protected override void OnInit(EventArgs e) {
            base.OnInit(e);

            Load += new EventHandler(HomePageProductsControl_Load);
            //rptCatalog.ItemDataBound += new RepeaterItemEventHandler(OnCatalogItemDataBound);
            lvProducts.ItemDataBound += new EventHandler<ListViewItemEventArgs>(lvProducts_ItemDataBound);
        }

        void HomePageProductsControl_Load(object sender, EventArgs e) {
            BindData();
        }

        private void BindData() {
            var products = _productService.GetAllProductsDisplayedOnHomePage();
            if (products.Count > 0) {
                //rptCatalog.DataSource = products;
                //rptCatalog.DataBind();

                lvProducts.DataSource = products;
                lvProducts.DataBind();
            } else {
                this.Visible = false;
            }
        }

        //protected void OnCatalogItemDataBound(object sender, RepeaterItemEventArgs e) {
        //    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
        //        var product = e.Item.DataItem as Product;
        //        if (product != null) {
        //            string productURL = SEOHelper.GetProductUrl(product);

        //            var hlImageLink = e.Item.FindControl("hlImageLink") as HyperLink;
        //            if (hlImageLink != null) {
        //                var picture = product.DefaultPicture;
        //                if (picture != null)
        //                    hlImageLink.ImageUrl = _pictureService.GetPictureUrl(picture, _settingService.GetSettingValueInteger("Media.Product.ThumbnailImageSize", 125), true);
        //                else
        //                    hlImageLink.ImageUrl = _pictureService.GetDefaultPictureUrl(_settingService.GetSettingValueInteger("Media.Product.ThumbnailImageSize", 125));

        //                hlImageLink.NavigateUrl = productURL;
        //                hlImageLink.ToolTip = String.Format(GetLocaleResourceString("Media.Product.ImageLinkTitleFormat"), product.LocalizedName);
        //                hlImageLink.Text = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.LocalizedName);
        //            }

        //            var hlProduct = e.Item.FindControl("hlProduct") as HyperLink;
        //            if (hlProduct != null) {
        //                hlProduct.NavigateUrl = productURL;
        //                hlProduct.Text = Server.HtmlEncode(product.LocalizedName);
        //            }

        //            var lShortDescription = e.Item.FindControl("lShortDescription") as Literal;
        //            lShortDescription.Text = product.LocalizedShortDescription;
        //        }
        //    }
        //}

        void lvProducts_ItemDataBound(object sender, ListViewItemEventArgs e) {
            if (e.Item.ItemType == ListViewItemType.DataItem) {
                var product = e.Item.DataItem as Product;
                if (product != null) {
                    string productURL = SEOHelper.GetProductUrl(product);

                    var hlImageLink = e.Item.FindControl("hlImageLink") as HyperLink;
                    if (hlImageLink != null) {
                        var picture = product.DefaultPicture;
                        if (picture != null)
                            hlImageLink.ImageUrl = _pictureService.GetPictureUrl(picture, _settingService.GetSettingValueInteger("Media.Product.ThumbnailImageSize", 125), true);
                        else
                            hlImageLink.ImageUrl = _pictureService.GetDefaultPictureUrl(_settingService.GetSettingValueInteger("Media.Product.ThumbnailImageSize", 125));

                        hlImageLink.NavigateUrl = productURL;
                        hlImageLink.ToolTip = String.Format(GetLocaleResourceString("Media.Product.ImageLinkTitleFormat"), product.LocalizedName);
                        hlImageLink.Text = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.LocalizedName);
                    }

                    var hlProduct = e.Item.FindControl("hlProduct") as HyperLink;
                    if (hlProduct != null) {
                        hlProduct.NavigateUrl = productURL;
                        hlProduct.Text = Server.HtmlEncode(product.LocalizedName);
                    }

                    var lShortDescription = e.Item.FindControl("lShortDescription") as Literal;
                    lShortDescription.Text = product.LocalizedShortDescription;
                }
            }
        }

    }
}